1 /* 2 D bindings for CUDA. 3 Authors: Prasun Anand 4 Copyright: Copyright (c) 2017, Prasun Anand. All rights reserved. 5 License: BSD 3-Clause License 6 */ 7 8 module cuda_d.cublas; 9 10 import cuda_d.cublas_api; 11 import cuda_d.cuComplex; 12 13 extern (C): 14 15 /* CUBLAS data types */ 16 alias cublasStatus_t cublasStatus; 17 18 cublasStatus_t cublasInit (); 19 cublasStatus_t cublasShutdown (); 20 cublasStatus_t cublasGetError (); 21 22 cublasStatus_t cublasGetVersion (int* version_); 23 cublasStatus_t cublasAlloc (int n, int elemSize, void** devicePtr); 24 25 cublasStatus_t cublasFree (void* devicePtr); 26 27 cublasStatus_t cublasSetKernelStream (cudaStream_t stream); 28 29 /* ---------------- CUBLAS BLAS1 functions ---------------- */ 30 /* NRM2 */ 31 float cublasSnrm2 (int n, const(float)* x, int incx); 32 double cublasDnrm2 (int n, const(double)* x, int incx); 33 float cublasScnrm2 (int n, const(cuComplex)* x, int incx); 34 double cublasDznrm2 (int n, const(cuDoubleComplex)* x, int incx); 35 /*------------------------------------------------------------------------*/ 36 /* DOT */ 37 float cublasSdot (int n, const(float)* x, int incx, const(float)* y, int incy); 38 double cublasDdot ( 39 int n, 40 const(double)* x, 41 int incx, 42 const(double)* y, 43 int incy); 44 cuComplex cublasCdotu ( 45 int n, 46 const(cuComplex)* x, 47 int incx, 48 const(cuComplex)* y, 49 int incy); 50 cuComplex cublasCdotc ( 51 int n, 52 const(cuComplex)* x, 53 int incx, 54 const(cuComplex)* y, 55 int incy); 56 cuDoubleComplex cublasZdotu ( 57 int n, 58 const(cuDoubleComplex)* x, 59 int incx, 60 const(cuDoubleComplex)* y, 61 int incy); 62 cuDoubleComplex cublasZdotc ( 63 int n, 64 const(cuDoubleComplex)* x, 65 int incx, 66 const(cuDoubleComplex)* y, 67 int incy); 68 69 /*------------------------------------------------------------------------*/ 70 /* SCAL */ 71 void cublasSscal (int n, float alpha, float* x, int incx); 72 void cublasDscal (int n, double alpha, double* x, int incx); 73 void cublasCscal (int n, cuComplex alpha, cuComplex* x, int incx); 74 void cublasZscal (int n, cuDoubleComplex alpha, cuDoubleComplex* x, int incx); 75 76 void cublasCsscal (int n, float alpha, cuComplex* x, int incx); 77 void cublasZdscal (int n, double alpha, cuDoubleComplex* x, int incx); 78 /*------------------------------------------------------------------------*/ 79 /* AXPY */ 80 void cublasSaxpy ( 81 int n, 82 float alpha, 83 const(float)* x, 84 int incx, 85 float* y, 86 int incy); 87 void cublasDaxpy ( 88 int n, 89 double alpha, 90 const(double)* x, 91 int incx, 92 double* y, 93 int incy); 94 void cublasCaxpy ( 95 int n, 96 cuComplex alpha, 97 const(cuComplex)* x, 98 int incx, 99 cuComplex* y, 100 int incy); 101 void cublasZaxpy ( 102 int n, 103 cuDoubleComplex alpha, 104 const(cuDoubleComplex)* x, 105 int incx, 106 cuDoubleComplex* y, 107 int incy); 108 109 /*------------------------------------------------------------------------*/ 110 /* COPY */ 111 void cublasScopy (int n, const(float)* x, int incx, float* y, int incy); 112 void cublasDcopy (int n, const(double)* x, int incx, double* y, int incy); 113 void cublasCcopy (int n, const(cuComplex)* x, int incx, cuComplex* y, int incy); 114 void cublasZcopy ( 115 int n, 116 const(cuDoubleComplex)* x, 117 int incx, 118 cuDoubleComplex* y, 119 int incy); 120 121 /*------------------------------------------------------------------------*/ 122 /* SWAP */ 123 void cublasSswap (int n, float* x, int incx, float* y, int incy); 124 void cublasDswap (int n, double* x, int incx, double* y, int incy); 125 void cublasCswap (int n, cuComplex* x, int incx, cuComplex* y, int incy); 126 void cublasZswap (int n, cuDoubleComplex* x, int incx, cuDoubleComplex* y, int incy); 127 /*------------------------------------------------------------------------*/ 128 /* AMAX */ 129 int cublasIsamax (int n, const(float)* x, int incx); 130 int cublasIdamax (int n, const(double)* x, int incx); 131 int cublasIcamax (int n, const(cuComplex)* x, int incx); 132 int cublasIzamax (int n, const(cuDoubleComplex)* x, int incx); 133 /*------------------------------------------------------------------------*/ 134 /* AMIN */ 135 int cublasIsamin (int n, const(float)* x, int incx); 136 int cublasIdamin (int n, const(double)* x, int incx); 137 138 int cublasIcamin (int n, const(cuComplex)* x, int incx); 139 int cublasIzamin (int n, const(cuDoubleComplex)* x, int incx); 140 /*------------------------------------------------------------------------*/ 141 /* ASUM */ 142 float cublasSasum (int n, const(float)* x, int incx); 143 double cublasDasum (int n, const(double)* x, int incx); 144 float cublasScasum (int n, const(cuComplex)* x, int incx); 145 double cublasDzasum (int n, const(cuDoubleComplex)* x, int incx); 146 /*------------------------------------------------------------------------*/ 147 /* ROT */ 148 void cublasSrot ( 149 int n, 150 float* x, 151 int incx, 152 float* y, 153 int incy, 154 float sc, 155 float ss); 156 void cublasDrot ( 157 int n, 158 double* x, 159 int incx, 160 double* y, 161 int incy, 162 double sc, 163 double ss); 164 void cublasCrot ( 165 int n, 166 cuComplex* x, 167 int incx, 168 cuComplex* y, 169 int incy, 170 float c, 171 cuComplex s); 172 void cublasZrot ( 173 int n, 174 cuDoubleComplex* x, 175 int incx, 176 cuDoubleComplex* y, 177 int incy, 178 double sc, 179 cuDoubleComplex cs); 180 void cublasCsrot ( 181 int n, 182 cuComplex* x, 183 int incx, 184 cuComplex* y, 185 int incy, 186 float c, 187 float s); 188 void cublasZdrot ( 189 int n, 190 cuDoubleComplex* x, 191 int incx, 192 cuDoubleComplex* y, 193 int incy, 194 double c, 195 double s); 196 197 /*------------------------------------------------------------------------*/ 198 /* ROTG */ 199 void cublasSrotg (float* sa, float* sb, float* sc, float* ss); 200 void cublasDrotg (double* sa, double* sb, double* sc, double* ss); 201 void cublasCrotg (cuComplex* ca, cuComplex cb, float* sc, cuComplex* cs); 202 void cublasZrotg ( 203 cuDoubleComplex* ca, 204 cuDoubleComplex cb, 205 double* sc, 206 cuDoubleComplex* cs); 207 208 /*------------------------------------------------------------------------*/ 209 /* ROTM */ 210 void cublasSrotm ( 211 int n, 212 float* x, 213 int incx, 214 float* y, 215 int incy, 216 const(float)* sparam); 217 void cublasDrotm ( 218 int n, 219 double* x, 220 int incx, 221 double* y, 222 int incy, 223 const(double)* sparam); 224 225 /*------------------------------------------------------------------------*/ 226 /* ROTMG */ 227 void cublasSrotmg ( 228 float* sd1, 229 float* sd2, 230 float* sx1, 231 const(float)* sy1, 232 float* sparam); 233 void cublasDrotmg ( 234 double* sd1, 235 double* sd2, 236 double* sx1, 237 const(double)* sy1, 238 double* sparam); 239 240 /* --------------- CUBLAS BLAS2 functions ---------------- */ 241 /* GEMV */ 242 void cublasSgemv ( 243 char trans, 244 int m, 245 int n, 246 float alpha, 247 const(float)* A, 248 int lda, 249 const(float)* x, 250 int incx, 251 float beta, 252 float* y, 253 int incy); 254 void cublasDgemv ( 255 char trans, 256 int m, 257 int n, 258 double alpha, 259 const(double)* A, 260 int lda, 261 const(double)* x, 262 int incx, 263 double beta, 264 double* y, 265 int incy); 266 void cublasCgemv ( 267 char trans, 268 int m, 269 int n, 270 cuComplex alpha, 271 const(cuComplex)* A, 272 int lda, 273 const(cuComplex)* x, 274 int incx, 275 cuComplex beta, 276 cuComplex* y, 277 int incy); 278 void cublasZgemv ( 279 char trans, 280 int m, 281 int n, 282 cuDoubleComplex alpha, 283 const(cuDoubleComplex)* A, 284 int lda, 285 const(cuDoubleComplex)* x, 286 int incx, 287 cuDoubleComplex beta, 288 cuDoubleComplex* y, 289 int incy); 290 291 /*------------------------------------------------------------------------*/ 292 /* GBMV */ 293 void cublasSgbmv ( 294 char trans, 295 int m, 296 int n, 297 int kl, 298 int ku, 299 float alpha, 300 const(float)* A, 301 int lda, 302 const(float)* x, 303 int incx, 304 float beta, 305 float* y, 306 int incy); 307 void cublasDgbmv ( 308 char trans, 309 int m, 310 int n, 311 int kl, 312 int ku, 313 double alpha, 314 const(double)* A, 315 int lda, 316 const(double)* x, 317 int incx, 318 double beta, 319 double* y, 320 int incy); 321 void cublasCgbmv ( 322 char trans, 323 int m, 324 int n, 325 int kl, 326 int ku, 327 cuComplex alpha, 328 const(cuComplex)* A, 329 int lda, 330 const(cuComplex)* x, 331 int incx, 332 cuComplex beta, 333 cuComplex* y, 334 int incy); 335 void cublasZgbmv ( 336 char trans, 337 int m, 338 int n, 339 int kl, 340 int ku, 341 cuDoubleComplex alpha, 342 const(cuDoubleComplex)* A, 343 int lda, 344 const(cuDoubleComplex)* x, 345 int incx, 346 cuDoubleComplex beta, 347 cuDoubleComplex* y, 348 int incy); 349 350 /*------------------------------------------------------------------------*/ 351 /* TRMV */ 352 void cublasStrmv ( 353 char uplo, 354 char trans, 355 char diag, 356 int n, 357 const(float)* A, 358 int lda, 359 float* x, 360 int incx); 361 void cublasDtrmv ( 362 char uplo, 363 char trans, 364 char diag, 365 int n, 366 const(double)* A, 367 int lda, 368 double* x, 369 int incx); 370 void cublasCtrmv ( 371 char uplo, 372 char trans, 373 char diag, 374 int n, 375 const(cuComplex)* A, 376 int lda, 377 cuComplex* x, 378 int incx); 379 void cublasZtrmv ( 380 char uplo, 381 char trans, 382 char diag, 383 int n, 384 const(cuDoubleComplex)* A, 385 int lda, 386 cuDoubleComplex* x, 387 int incx); 388 389 /*------------------------------------------------------------------------*/ 390 /* TBMV */ 391 void cublasStbmv ( 392 char uplo, 393 char trans, 394 char diag, 395 int n, 396 int k, 397 const(float)* A, 398 int lda, 399 float* x, 400 int incx); 401 void cublasDtbmv ( 402 char uplo, 403 char trans, 404 char diag, 405 int n, 406 int k, 407 const(double)* A, 408 int lda, 409 double* x, 410 int incx); 411 void cublasCtbmv ( 412 char uplo, 413 char trans, 414 char diag, 415 int n, 416 int k, 417 const(cuComplex)* A, 418 int lda, 419 cuComplex* x, 420 int incx); 421 void cublasZtbmv ( 422 char uplo, 423 char trans, 424 char diag, 425 int n, 426 int k, 427 const(cuDoubleComplex)* A, 428 int lda, 429 cuDoubleComplex* x, 430 int incx); 431 432 /*------------------------------------------------------------------------*/ 433 /* TPMV */ 434 void cublasStpmv (char uplo, char trans, char diag, int n, const(float)* AP, float* x, int incx); 435 436 void cublasDtpmv (char uplo, char trans, char diag, int n, const(double)* AP, double* x, int incx); 437 438 void cublasCtpmv (char uplo, char trans, char diag, int n, const(cuComplex)* AP, cuComplex* x, int incx); 439 440 void cublasZtpmv (char uplo, char trans, char diag, int n, const(cuDoubleComplex)* AP, cuDoubleComplex* x, int incx); 441 /*------------------------------------------------------------------------*/ 442 /* TRSV */ 443 void cublasStrsv (char uplo, char trans, char diag, int n, const(float)* A, int lda, float* x, int incx); 444 445 void cublasDtrsv (char uplo, char trans, char diag, int n, const(double)* A, int lda, double* x, int incx); 446 447 void cublasCtrsv (char uplo, char trans, char diag, int n, const(cuComplex)* A, int lda, cuComplex* x, int incx); 448 449 void cublasZtrsv ( 450 char uplo, 451 char trans, 452 char diag, 453 int n, 454 const(cuDoubleComplex)* A, 455 int lda, 456 cuDoubleComplex* x, 457 int incx); 458 459 /*------------------------------------------------------------------------*/ 460 /* TPSV */ 461 void cublasStpsv ( 462 char uplo, 463 char trans, 464 char diag, 465 int n, 466 const(float)* AP, 467 float* x, 468 int incx); 469 470 void cublasDtpsv (char uplo, char trans, char diag, int n, const(double)* AP, double* x, int incx); 471 472 void cublasCtpsv (char uplo, char trans, char diag, int n, const(cuComplex)* AP, cuComplex* x, int incx); 473 474 void cublasZtpsv ( 475 char uplo, 476 char trans, 477 char diag, 478 int n, 479 const(cuDoubleComplex)* AP, 480 cuDoubleComplex* x, 481 int incx); 482 483 /*------------------------------------------------------------------------*/ 484 /* TBSV */ 485 void cublasStbsv ( 486 char uplo, 487 char trans, 488 char diag, 489 int n, 490 int k, 491 const(float)* A, 492 int lda, 493 float* x, 494 int incx); 495 496 void cublasDtbsv ( 497 char uplo, 498 char trans, 499 char diag, 500 int n, 501 int k, 502 const(double)* A, 503 int lda, 504 double* x, 505 int incx); 506 void cublasCtbsv ( 507 char uplo, 508 char trans, 509 char diag, 510 int n, 511 int k, 512 const(cuComplex)* A, 513 int lda, 514 cuComplex* x, 515 int incx); 516 517 void cublasZtbsv ( 518 char uplo, 519 char trans, 520 char diag, 521 int n, 522 int k, 523 const(cuDoubleComplex)* A, 524 int lda, 525 cuDoubleComplex* x, 526 int incx); 527 528 /*------------------------------------------------------------------------*/ 529 /* SYMV/HEMV */ 530 void cublasSsymv ( 531 char uplo, 532 int n, 533 float alpha, 534 const(float)* A, 535 int lda, 536 const(float)* x, 537 int incx, 538 float beta, 539 float* y, 540 int incy); 541 void cublasDsymv ( 542 char uplo, 543 int n, 544 double alpha, 545 const(double)* A, 546 int lda, 547 const(double)* x, 548 int incx, 549 double beta, 550 double* y, 551 int incy); 552 void cublasChemv ( 553 char uplo, 554 int n, 555 cuComplex alpha, 556 const(cuComplex)* A, 557 int lda, 558 const(cuComplex)* x, 559 int incx, 560 cuComplex beta, 561 cuComplex* y, 562 int incy); 563 void cublasZhemv ( 564 char uplo, 565 int n, 566 cuDoubleComplex alpha, 567 const(cuDoubleComplex)* A, 568 int lda, 569 const(cuDoubleComplex)* x, 570 int incx, 571 cuDoubleComplex beta, 572 cuDoubleComplex* y, 573 int incy); 574 575 /*------------------------------------------------------------------------*/ 576 /* SBMV/HBMV */ 577 void cublasSsbmv ( 578 char uplo, 579 int n, 580 int k, 581 float alpha, 582 const(float)* A, 583 int lda, 584 const(float)* x, 585 int incx, 586 float beta, 587 float* y, 588 int incy); 589 void cublasDsbmv ( 590 char uplo, 591 int n, 592 int k, 593 double alpha, 594 const(double)* A, 595 int lda, 596 const(double)* x, 597 int incx, 598 double beta, 599 double* y, 600 int incy); 601 void cublasChbmv ( 602 char uplo, 603 int n, 604 int k, 605 cuComplex alpha, 606 const(cuComplex)* A, 607 int lda, 608 const(cuComplex)* x, 609 int incx, 610 cuComplex beta, 611 cuComplex* y, 612 int incy); 613 void cublasZhbmv ( 614 char uplo, 615 int n, 616 int k, 617 cuDoubleComplex alpha, 618 const(cuDoubleComplex)* A, 619 int lda, 620 const(cuDoubleComplex)* x, 621 int incx, 622 cuDoubleComplex beta, 623 cuDoubleComplex* y, 624 int incy); 625 626 /*------------------------------------------------------------------------*/ 627 /* SPMV/HPMV */ 628 void cublasSspmv ( 629 char uplo, 630 int n, 631 float alpha, 632 const(float)* AP, 633 const(float)* x, 634 int incx, 635 float beta, 636 float* y, 637 int incy); 638 void cublasDspmv ( 639 char uplo, 640 int n, 641 double alpha, 642 const(double)* AP, 643 const(double)* x, 644 int incx, 645 double beta, 646 double* y, 647 int incy); 648 void cublasChpmv ( 649 char uplo, 650 int n, 651 cuComplex alpha, 652 const(cuComplex)* AP, 653 const(cuComplex)* x, 654 int incx, 655 cuComplex beta, 656 cuComplex* y, 657 int incy); 658 void cublasZhpmv ( 659 char uplo, 660 int n, 661 cuDoubleComplex alpha, 662 const(cuDoubleComplex)* AP, 663 const(cuDoubleComplex)* x, 664 int incx, 665 cuDoubleComplex beta, 666 cuDoubleComplex* y, 667 int incy); 668 669 /*------------------------------------------------------------------------*/ 670 /* GER */ 671 void cublasSger ( 672 int m, 673 int n, 674 float alpha, 675 const(float)* x, 676 int incx, 677 const(float)* y, 678 int incy, 679 float* A, 680 int lda); 681 void cublasDger ( 682 int m, 683 int n, 684 double alpha, 685 const(double)* x, 686 int incx, 687 const(double)* y, 688 int incy, 689 double* A, 690 int lda); 691 692 void cublasCgeru ( 693 int m, 694 int n, 695 cuComplex alpha, 696 const(cuComplex)* x, 697 int incx, 698 const(cuComplex)* y, 699 int incy, 700 cuComplex* A, 701 int lda); 702 void cublasCgerc ( 703 int m, 704 int n, 705 cuComplex alpha, 706 const(cuComplex)* x, 707 int incx, 708 const(cuComplex)* y, 709 int incy, 710 cuComplex* A, 711 int lda); 712 void cublasZgeru ( 713 int m, 714 int n, 715 cuDoubleComplex alpha, 716 const(cuDoubleComplex)* x, 717 int incx, 718 const(cuDoubleComplex)* y, 719 int incy, 720 cuDoubleComplex* A, 721 int lda); 722 void cublasZgerc ( 723 int m, 724 int n, 725 cuDoubleComplex alpha, 726 const(cuDoubleComplex)* x, 727 int incx, 728 const(cuDoubleComplex)* y, 729 int incy, 730 cuDoubleComplex* A, 731 int lda); 732 733 /*------------------------------------------------------------------------*/ 734 /* SYR/HER */ 735 void cublasSsyr ( 736 char uplo, 737 int n, 738 float alpha, 739 const(float)* x, 740 int incx, 741 float* A, 742 int lda); 743 void cublasDsyr ( 744 char uplo, 745 int n, 746 double alpha, 747 const(double)* x, 748 int incx, 749 double* A, 750 int lda); 751 752 void cublasCher ( 753 char uplo, 754 int n, 755 float alpha, 756 const(cuComplex)* x, 757 int incx, 758 cuComplex* A, 759 int lda); 760 void cublasZher ( 761 char uplo, 762 int n, 763 double alpha, 764 const(cuDoubleComplex)* x, 765 int incx, 766 cuDoubleComplex* A, 767 int lda); 768 769 /*------------------------------------------------------------------------*/ 770 /* SPR/HPR */ 771 void cublasSspr ( 772 char uplo, 773 int n, 774 float alpha, 775 const(float)* x, 776 int incx, 777 float* AP); 778 void cublasDspr ( 779 char uplo, 780 int n, 781 double alpha, 782 const(double)* x, 783 int incx, 784 double* AP); 785 void cublasChpr ( 786 char uplo, 787 int n, 788 float alpha, 789 const(cuComplex)* x, 790 int incx, 791 cuComplex* AP); 792 void cublasZhpr ( 793 char uplo, 794 int n, 795 double alpha, 796 const(cuDoubleComplex)* x, 797 int incx, 798 cuDoubleComplex* AP); 799 800 /*------------------------------------------------------------------------*/ 801 /* SYR2/HER2 */ 802 void cublasSsyr2 ( 803 char uplo, 804 int n, 805 float alpha, 806 const(float)* x, 807 int incx, 808 const(float)* y, 809 int incy, 810 float* A, 811 int lda); 812 void cublasDsyr2 ( 813 char uplo, 814 int n, 815 double alpha, 816 const(double)* x, 817 int incx, 818 const(double)* y, 819 int incy, 820 double* A, 821 int lda); 822 void cublasCher2 ( 823 char uplo, 824 int n, 825 cuComplex alpha, 826 const(cuComplex)* x, 827 int incx, 828 const(cuComplex)* y, 829 int incy, 830 cuComplex* A, 831 int lda); 832 void cublasZher2 ( 833 char uplo, 834 int n, 835 cuDoubleComplex alpha, 836 const(cuDoubleComplex)* x, 837 int incx, 838 const(cuDoubleComplex)* y, 839 int incy, 840 cuDoubleComplex* A, 841 int lda); 842 843 /*------------------------------------------------------------------------*/ 844 /* SPR2/HPR2 */ 845 void cublasSspr2 ( 846 char uplo, 847 int n, 848 float alpha, 849 const(float)* x, 850 int incx, 851 const(float)* y, 852 int incy, 853 float* AP); 854 void cublasDspr2 ( 855 char uplo, 856 int n, 857 double alpha, 858 const(double)* x, 859 int incx, 860 const(double)* y, 861 int incy, 862 double* AP); 863 void cublasChpr2 ( 864 char uplo, 865 int n, 866 cuComplex alpha, 867 const(cuComplex)* x, 868 int incx, 869 const(cuComplex)* y, 870 int incy, 871 cuComplex* AP); 872 void cublasZhpr2 ( 873 char uplo, 874 int n, 875 cuDoubleComplex alpha, 876 const(cuDoubleComplex)* x, 877 int incx, 878 const(cuDoubleComplex)* y, 879 int incy, 880 cuDoubleComplex* AP); 881 882 /* ------------------------BLAS3 Functions ------------------------------- */ 883 /* GEMM */ 884 void cublasSgemm ( 885 char transa, 886 char transb, 887 int m, 888 int n, 889 int k, 890 float alpha, 891 const(float)* A, 892 int lda, 893 const(float)* B, 894 int ldb, 895 float beta, 896 float* C, 897 int ldc); 898 void cublasDgemm ( 899 char transa, 900 char transb, 901 int m, 902 int n, 903 int k, 904 double alpha, 905 const(double)* A, 906 int lda, 907 const(double)* B, 908 int ldb, 909 double beta, 910 double* C, 911 int ldc); 912 void cublasCgemm ( 913 char transa, 914 char transb, 915 int m, 916 int n, 917 int k, 918 cuComplex alpha, 919 const(cuComplex)* A, 920 int lda, 921 const(cuComplex)* B, 922 int ldb, 923 cuComplex beta, 924 cuComplex* C, 925 int ldc); 926 void cublasZgemm ( 927 char transa, 928 char transb, 929 int m, 930 int n, 931 int k, 932 cuDoubleComplex alpha, 933 const(cuDoubleComplex)* A, 934 int lda, 935 const(cuDoubleComplex)* B, 936 int ldb, 937 cuDoubleComplex beta, 938 cuDoubleComplex* C, 939 int ldc); 940 941 /* -------------------------------------------------------*/ 942 /* SYRK */ 943 void cublasSsyrk ( 944 char uplo, 945 char trans, 946 int n, 947 int k, 948 float alpha, 949 const(float)* A, 950 int lda, 951 float beta, 952 float* C, 953 int ldc); 954 void cublasDsyrk ( 955 char uplo, 956 char trans, 957 int n, 958 int k, 959 double alpha, 960 const(double)* A, 961 int lda, 962 double beta, 963 double* C, 964 int ldc); 965 966 void cublasCsyrk ( 967 char uplo, 968 char trans, 969 int n, 970 int k, 971 cuComplex alpha, 972 const(cuComplex)* A, 973 int lda, 974 cuComplex beta, 975 cuComplex* C, 976 int ldc); 977 void cublasZsyrk ( 978 char uplo, 979 char trans, 980 int n, 981 int k, 982 cuDoubleComplex alpha, 983 const(cuDoubleComplex)* A, 984 int lda, 985 cuDoubleComplex beta, 986 cuDoubleComplex* C, 987 int ldc); 988 989 /* ------------------------------------------------------- */ 990 /* HERK */ 991 void cublasCherk ( 992 char uplo, 993 char trans, 994 int n, 995 int k, 996 float alpha, 997 const(cuComplex)* A, 998 int lda, 999 float beta, 1000 cuComplex* C, 1001 int ldc); 1002 void cublasZherk ( 1003 char uplo, 1004 char trans, 1005 int n, 1006 int k, 1007 double alpha, 1008 const(cuDoubleComplex)* A, 1009 int lda, 1010 double beta, 1011 cuDoubleComplex* C, 1012 int ldc); 1013 1014 /* ------------------------------------------------------- */ 1015 /* SYR2K */ 1016 void cublasSsyr2k ( 1017 char uplo, 1018 char trans, 1019 int n, 1020 int k, 1021 float alpha, 1022 const(float)* A, 1023 int lda, 1024 const(float)* B, 1025 int ldb, 1026 float beta, 1027 float* C, 1028 int ldc); 1029 1030 void cublasDsyr2k ( 1031 char uplo, 1032 char trans, 1033 int n, 1034 int k, 1035 double alpha, 1036 const(double)* A, 1037 int lda, 1038 const(double)* B, 1039 int ldb, 1040 double beta, 1041 double* C, 1042 int ldc); 1043 void cublasCsyr2k ( 1044 char uplo, 1045 char trans, 1046 int n, 1047 int k, 1048 cuComplex alpha, 1049 const(cuComplex)* A, 1050 int lda, 1051 const(cuComplex)* B, 1052 int ldb, 1053 cuComplex beta, 1054 cuComplex* C, 1055 int ldc); 1056 1057 void cublasZsyr2k ( 1058 char uplo, 1059 char trans, 1060 int n, 1061 int k, 1062 cuDoubleComplex alpha, 1063 const(cuDoubleComplex)* A, 1064 int lda, 1065 const(cuDoubleComplex)* B, 1066 int ldb, 1067 cuDoubleComplex beta, 1068 cuDoubleComplex* C, 1069 int ldc); 1070 1071 /* ------------------------------------------------------- */ 1072 /* HER2K */ 1073 void cublasCher2k ( 1074 char uplo, 1075 char trans, 1076 int n, 1077 int k, 1078 cuComplex alpha, 1079 const(cuComplex)* A, 1080 int lda, 1081 const(cuComplex)* B, 1082 int ldb, 1083 float beta, 1084 cuComplex* C, 1085 int ldc); 1086 1087 void cublasZher2k ( 1088 char uplo, 1089 char trans, 1090 int n, 1091 int k, 1092 cuDoubleComplex alpha, 1093 const(cuDoubleComplex)* A, 1094 int lda, 1095 const(cuDoubleComplex)* B, 1096 int ldb, 1097 double beta, 1098 cuDoubleComplex* C, 1099 int ldc); 1100 1101 /*------------------------------------------------------------------------*/ 1102 /* SYMM*/ 1103 void cublasSsymm ( 1104 char side, 1105 char uplo, 1106 int m, 1107 int n, 1108 float alpha, 1109 const(float)* A, 1110 int lda, 1111 const(float)* B, 1112 int ldb, 1113 float beta, 1114 float* C, 1115 int ldc); 1116 void cublasDsymm ( 1117 char side, 1118 char uplo, 1119 int m, 1120 int n, 1121 double alpha, 1122 const(double)* A, 1123 int lda, 1124 const(double)* B, 1125 int ldb, 1126 double beta, 1127 double* C, 1128 int ldc); 1129 1130 void cublasCsymm ( 1131 char side, 1132 char uplo, 1133 int m, 1134 int n, 1135 cuComplex alpha, 1136 const(cuComplex)* A, 1137 int lda, 1138 const(cuComplex)* B, 1139 int ldb, 1140 cuComplex beta, 1141 cuComplex* C, 1142 int ldc); 1143 1144 void cublasZsymm ( 1145 char side, 1146 char uplo, 1147 int m, 1148 int n, 1149 cuDoubleComplex alpha, 1150 const(cuDoubleComplex)* A, 1151 int lda, 1152 const(cuDoubleComplex)* B, 1153 int ldb, 1154 cuDoubleComplex beta, 1155 cuDoubleComplex* C, 1156 int ldc); 1157 1158 /*------------------------------------------------------------------------*/ 1159 /* HEMM*/ 1160 void cublasChemm ( 1161 char side, 1162 char uplo, 1163 int m, 1164 int n, 1165 cuComplex alpha, 1166 const(cuComplex)* A, 1167 int lda, 1168 const(cuComplex)* B, 1169 int ldb, 1170 cuComplex beta, 1171 cuComplex* C, 1172 int ldc); 1173 void cublasZhemm ( 1174 char side, 1175 char uplo, 1176 int m, 1177 int n, 1178 cuDoubleComplex alpha, 1179 const(cuDoubleComplex)* A, 1180 int lda, 1181 const(cuDoubleComplex)* B, 1182 int ldb, 1183 cuDoubleComplex beta, 1184 cuDoubleComplex* C, 1185 int ldc); 1186 1187 /*------------------------------------------------------------------------*/ 1188 /* TRSM*/ 1189 void cublasStrsm ( 1190 char side, 1191 char uplo, 1192 char transa, 1193 char diag, 1194 int m, 1195 int n, 1196 float alpha, 1197 const(float)* A, 1198 int lda, 1199 float* B, 1200 int ldb); 1201 1202 void cublasDtrsm ( 1203 char side, 1204 char uplo, 1205 char transa, 1206 char diag, 1207 int m, 1208 int n, 1209 double alpha, 1210 const(double)* A, 1211 int lda, 1212 double* B, 1213 int ldb); 1214 1215 void cublasCtrsm ( 1216 char side, 1217 char uplo, 1218 char transa, 1219 char diag, 1220 int m, 1221 int n, 1222 cuComplex alpha, 1223 const(cuComplex)* A, 1224 int lda, 1225 cuComplex* B, 1226 int ldb); 1227 1228 void cublasZtrsm ( 1229 char side, 1230 char uplo, 1231 char transa, 1232 char diag, 1233 int m, 1234 int n, 1235 cuDoubleComplex alpha, 1236 const(cuDoubleComplex)* A, 1237 int lda, 1238 cuDoubleComplex* B, 1239 int ldb); 1240 1241 /*------------------------------------------------------------------------*/ 1242 /* TRMM*/ 1243 void cublasStrmm ( 1244 char side, 1245 char uplo, 1246 char transa, 1247 char diag, 1248 int m, 1249 int n, 1250 float alpha, 1251 const(float)* A, 1252 int lda, 1253 float* B, 1254 int ldb); 1255 void cublasDtrmm ( 1256 char side, 1257 char uplo, 1258 char transa, 1259 char diag, 1260 int m, 1261 int n, 1262 double alpha, 1263 const(double)* A, 1264 int lda, 1265 double* B, 1266 int ldb); 1267 void cublasCtrmm ( 1268 char side, 1269 char uplo, 1270 char transa, 1271 char diag, 1272 int m, 1273 int n, 1274 cuComplex alpha, 1275 const(cuComplex)* A, 1276 int lda, 1277 cuComplex* B, 1278 int ldb); 1279 void cublasZtrmm ( 1280 char side, 1281 char uplo, 1282 char transa, 1283 char diag, 1284 int m, 1285 int n, 1286 cuDoubleComplex alpha, 1287 const(cuDoubleComplex)* A, 1288 int lda, 1289 cuDoubleComplex* B, 1290 int ldb);